본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Teardrop Attack; 티어드롭
IP 단편(fragment)의 순서 번호(fragment offset)를 겹치거나 어긋나게 조작해 보내, 받는 쪽 시스템이 단편을 재조합하는 과정에서 오류를 일으키게 하는 서비스 거부 공격

큰 IP 패킷은 경로의 MTU 를 넘으면 여러 조각으로 나뉘어 전송된다(IP 단편화). 각 단편의 헤더에는 원래 패킷에서 이 조각이 시작하는 위치인 Fragment Offset(8바이트 단위)과 뒤에 단편이 더 있는지를 알리는 More Fragments 플래그가 들어 있고, 수신 호스트는 이 값으로 조각을 제자리에 맞춰 원래 패킷을 복원한다.

티어드롭 공격은 이 오프셋을 정상과 다르게 만든다.

  • 앞 단편이 0~1,479 바이트를 담고 있는데 다음 단편의 오프셋이 그 안쪽(예: 1,000 바이트 위치)을 가리켜 구간이 겹치게 한다
  • 겹친 길이를 계산하는 과정에서 음수 길이가 나오는 등 예외 처리가 없는 운영체제는 메모리를 잘못 복사하거나 커널이 멈춘다
  • 1997년 무렵의 리눅스·윈도우 95/NT 등에서 시스템이 다운되는 문제로 알려졌고, 지금은 대부분의 운영체제가 패치되어 있다
  • Bonk: 순서 번호가 1번인 단편을 계속 보낸다
  • Boink: 처음에는 정상 순서의 단편을 보내다가 점점 순서 번호가 어긋난 단편을 보낸다. Bonk 를 개선한 방식이다
  • 이러한 공격들을 Inconsistent Fragmentation 공격이라 한다. 단편을 지나치게 잘게 쪼개 TCP 헤더를 두 단편에 걸치게 하는 Tiny Fragment 공격은 방화벽 우회가 목적이라 성격이 다르다
  • 운영체제를 패치해 재조합 시 오프셋 겹침·범위 초과를 검사하고 비정상 단편을 버리게 한다
  • 방화벽·침입 차단 시스템에서 오프셋이 겹치거나 비정상적인 단편을 차단하고, 일정 시간 안에 재조합이 끝나지 않는 단편을 폐기한다
  • 경계에서 단편을 재조합해 검사한 뒤 내부로 넘긴다

비슷한 서비스 거부 공격과의 구별

편집 원본 편집
공격 핵심 티어드롭과의 차이
티어드롭 단편의 오프셋(순서 번호) 조작 → 재조합 오류 —
Ping of Death 최대 크기(65,535바이트)를 넘는 ICMP 패킷을 단편으로 보냄 오프셋이 아니라 재조합 결과의 크기로 버퍼를 넘친다
스머프 공격 출발지를 대상으로 위조한 ICMP Echo Request 를 브로드캐스트 단편과 무관한 증폭형 대역폭 소진 공격
ICMP 플러딩 ICMP 패킷을 대량 전송 정상 모양의 패킷을 양으로 밀어붙인다
버퍼 오버플로우 버퍼보다 큰 입력으로 메모리를 덮어씀 네트워크 단편이 아니라 프로그램의 입력 처리 취약점이며, 서비스 중단보다 임의 코드 실행이 주된 목적인 경우가 많다
Land 공격 출발지와 목적지 IP·포트를 같게 위조 대상이 자기 자신에게 응답하게 만든다